/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package Dao;
import Janela.CidadesGUI;
import Modelo.Cidades;
import Modelo.LocaisVisitados;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Aluno
 */
public class CidadesDAO {
    
        public Boolean Cadastrar(Cidades obj) {

        Boolean retorno = false;

        String sql = "INSERT INTO cidade( nome, descricao ,dica1, dica2, dica3, item1, item2) VALUES (?,?,?,?,?,?,?)";
         PreparedStatement psm = DAO.Conexao.getPreparedStatement(sql);
                    try{
            psm.setString(1, obj.getNomecidade());
            psm.setString(2, obj.getDescricao());
            psm.setString(3, obj.getDica1());
            psm.setString(4, obj.getDica2());
            psm.setString(5, obj.getDica3());
            psm.setString(6, obj.getItem1());
            psm.setString(7, obj.getItem2());

            Integer resultado = psm.executeUpdate();
            if (resultado > 0) {
                retorno = true;
            } else {
                retorno = false;
            }
        } catch (SQLException ex) {
           System.out.println("Erro ao acessar o banco" + ex.getMessage());
            return false;
        }
        return retorno;
    }
     public Boolean Alterar(Cidades obj) {

        Boolean retorno = false;

        String sql = "UPDATE cidades "
                + "   SET  nomecidade=?, dica1=?, dica2=?, dica3=?, item1=?, item2=?, descricao=? "
                + "   WHERE cidadeid=?";
        PreparedStatement pst = Conexao.getPreparedStatement(sql);

        try {
            pst.setString(1, obj.getNomecidade());
            pst.setString(2, obj.getDescricao());
            pst.setString(3, obj.getDica1());
            pst.setString(4, obj.getDica2());
            pst.setString(5, obj.getDica3());
            pst.setString(6, obj.getItem1());
            pst.setString(7, obj.getItem2());
            pst.setInt(8, obj.getCidadeid());

            Integer resultado = pst.executeUpdate();
            if (resultado > 0) {
                retorno = true;
            } else {
                retorno = false;
            }
        } catch (SQLException ex) {
            System.out.println("Erro ao acessar o banco");
            return false;
        }
        return retorno;
    }
    public List<Cidades> Listar() {
        List<Cidades> lista = new ArrayList<>();
        String sql = "SELECT * FROM cidades";
          PreparedStatement psm = DAO.Conexao.getPreparedStatement(sql);
           try {
               ResultSet resultado = psm.executeQuery();
               while(resultado.next()) {
                   Cidades obj = new Cidades();
                   obj.setCidadeid(resultado.getInt("cidadeid"));
                   obj.setNomecidade(resultado.getString("nome"));
                   obj.setDescricao(resultado.getString("descricao"));
                   obj.setDica1(resultado.getString("dica1"));
                   obj.setDica2(resultado.getString("dica2"));
                   obj.setDica3(resultado.getString("dica3"));
                   obj.setItem1(resultado.getString("item1"));
                   obj.setItem2(resultado.getString("Item2"));
                   lista.add(obj);
               }
               
           } catch(SQLException ex) {
               System.out.println("Erro ao acessar o banco" + ex.getMessage());
               lista = null;
           }
           
        return lista;
    }
    public Boolean Excluir(Cidades obj)
    {
        Boolean retorno = false;
        //MONTA A STRING DE EXCLUSÃO a partir da chave primária
        String sql = "DELETE FROM cidades WHERE cidadeid=?";
        PreparedStatement psm = DAO.Conexao.getPreparedStatement(sql);
        try {
            //PASSA A CHAVE PRIMÁRIA AO PARÂMETRO
            psm.setInt(1, obj.getCidadeid());
            //EXECUTA A CONSULTA
            Integer resultado = psm.executeUpdate();
            if(resultado>0)
            {
                retorno = true; 
            }
            else
            {
                retorno = false;
            }
        } catch (SQLException ex) {
             System.out.println("BD: " + ex.getMessage());
        }
        return retorno;
    }
    public Cidades Consultar(Cidades obj2) {

        String sql = "SELECT * FROM cidades WHERE nome = ?";
        Cidades obj = null;
        PreparedStatement psm = Conexao.getPreparedStatement(sql);

        try {
            psm.setString(1, obj2.getNomecidade());
            ResultSet resultado = psm.executeQuery();

            if (resultado.next()) {
                obj = new Cidades();
                obj.setCidadeid(resultado.getInt("cidadeid"));
                obj.setDescricao(resultado.getString("descricao"));
                obj.setDica1(resultado.getString("dica1"));
                obj.setDica2(resultado.getString("dica2"));
                obj.setDica3(resultado.getString("dica3"));
                obj.setItem1(resultado.getString("item1"));
                obj.setItem2(resultado.getString("item2"));
                obj.setNomecidade(resultado.getString("nome"));
           }

        } catch (SQLException ex) {
            System.out.println("Erro ao acessar o banco: " + ex.getMessage().toString());

        }

        return obj;
    }
}

